package com.changgou.order.mq.queue;


import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;


/**
 * 延时队列配置
 */

public class QueueConfig {
    /***
     * 创建QUEUE1   延时队列，会过期，过期后将数据发给 Queue2
     */
    //这里没有写别名，默认就是方法名
    @Bean
    public Queue orderDelayQueue(){
        return QueueBuilder.durable("orderDelayQueue")   //队列名字

                /**
                 * orderDelayQueue队列信息过期后，就会存入一个默认为死信队列的地方。这里有一个死信交换机，需要把这里面数据传给我们自己的交换机
                 * x-dead-letter-exchange  --》orderListenerExchange" 我们的交换机
                 * 这里回头从学一次
                 */
                .withArgument("x-dead-letter-exchange","orderListenerExchange")  //消息超时进入死信队列，绑定死信队列交换机
                .withArgument("x-dead-letter-routing-key","orderListenerQueue")  //绑定指定的routing-key
                .build();

    }

    /***
     * 创建QUEUE2
     */

    @Bean
    public Queue orderListenerQueue(){
        return new Queue("orderListenerQueue",true);
    }
    /***
     * 创建交换机
     */@Bean
    public Exchange orderListenerExchange(){
        return new DirectExchange("orderListenerExchange");
    }


    /***
     * 队列queue2绑定EXchange
     */
    @Bean
    public Binding orderListenerBinding(Queue orderListenerQueue ,Exchange orderListenerExchange){
        return BindingBuilder.bind(orderListenerQueue).to(orderListenerExchange).with("orderListenerQueue").noargs();
    }
}

